﻿/* Copyright (c) Microsoft Corporation
 * 
 * All rights reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.  You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
 * 
 * THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
 * 
 * See the Apache Version 2.0 License for specific language governing permissions and limitations under the License.
*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ProximityTapper
{
    [CLSCompliant(false)]
    public interface IOobConnector : IMessageData
    {
        // This determines if current message is Oob Connector Service Activation message
        // or Oob Connector Service Ack Message
        bool IsAck { get; }

        // Service Activation Header
        // This is used in OobConnector Message
        IServiceActivationHeader ServiceActivationHeader { get; }

        // Reply channel ID (8 bytes)
        // This is used in OobConnector Message
        byte[] ReplyChannelId { get; }

        // WiFi Direct (WFD) Address (16 bytes)
        // This is used in OobConnector Message
        // Also used in OobConnectorAck Message
        byte[] WFDAddress { get; }

        // Link Local Address (16 bytes)
        // This is used in OobConnector Message
        // Also used in OobConnectorAck Message
        byte[] LinkLocalAddress { get; }

        // IPv4 Address (16 bytes)
        // This is used in OobConnector Message
        // Also used in OobConnectorAck Message
        byte[] IPv4Address { get; }

        // Proximity Address (16 bytes)
        // This is used in OobConnector Message
        // Also used in OobConnectorAck Message
        byte[] ProximityAddress { get; }

        // Global Address (16 bytes)
        // This is used in OobConnector Message
        // Also used in OobConnectorAck Message
        byte[] GlobalAddress { get; }

        // Teredo Address (16 bytes)
        // This is used in OobConnector Message
        // Also used in OobConnectorAck Message
        byte[] TeredoAddress { get; }

        // reserved 1 (32 bits)
        // This is used in OobConnector Message
        UInt32 Reserved { get; }

        // Bluetooth MAC Address (8 bytes)
        // This is used in OobConnector Message
        // Also used in OobConnectorAck Message
        byte[] BluetoothMACAddress { get; }

        // WFD Blob
        // This is used in OobConnector Message
        // Also used in OobConnectorAck Message
        byte[] WFDBlob { get; }
    }
}
